<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Kinetis Bootloader: Command Handler</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="nxp_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kinetis Bootloader
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   <div id="projectbrief">Common bootloader for Kinetis devices</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Introduction</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__command.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">Command Handler<div class="ingroups"><a class="el" href="group__bootloader.html">Bootloader</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>API for the command handler.  
<a href="#details">More...</a></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Collaboration diagram for Command Handler:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<center><table><tr><td><div class="center"><iframe scrolling="no" frameborder="0" src="group__command.svg" width="272" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</td></tr></table></center>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structcommand__handler__entry__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a></td></tr>
<tr class="memdesc:structcommand__handler__entry__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Format of command handler entry.  <a href="group__command.html#structcommand__handler__entry__t">More...</a><br /></td></tr>
<tr class="separator:structcommand__handler__entry__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structcommand__processor__data__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#structcommand__processor__data__t">command_processor_data_t</a></td></tr>
<tr class="memdesc:structcommand__processor__data__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command processor data format.  <a href="group__command.html#structcommand__processor__data__t">More...</a><br /></td></tr>
<tr class="separator:structcommand__processor__data__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structcommand__interface__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#structcommand__interface__t">command_interface_t</a></td></tr>
<tr class="memdesc:structcommand__interface__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface to command processor operations.  <a href="group__command.html#structcommand__interface__t">More...</a><br /></td></tr>
<tr class="separator:structcommand__interface__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structconfig__i2c__cmd__packet__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#structconfig__i2c__cmd__packet__t">config_i2c_cmd_packet_t</a></td></tr>
<tr class="separator:structconfig__i2c__cmd__packet__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga296b36acac7ad0ff62bfa08d54ce8f96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga296b36acac7ad0ff62bfa08d54ce8f96"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga296b36acac7ad0ff62bfa08d54ce8f96">_command_state</a> { <br />
&#160;&#160;<b>kCommandState_CommandPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_CommandPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhaseRead</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhaseWrite</b>
<br />
 }<tr class="memdesc:ga296b36acac7ad0ff62bfa08d54ce8f96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command state machine states. <br /></td></tr>
</td></tr>
<tr class="separator:ga296b36acac7ad0ff62bfa08d54ce8f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a8a44c0ea555a6243528abc3d31806a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga6a8a44c0ea555a6243528abc3d31806a">_secure_commands</a> { <a class="el" href="group__command.html#gga6a8a44c0ea555a6243528abc3d31806aabf915d8b3f364392628700d2cd25d043">kCommandsAllowedWhenSecure</a>
 }</td></tr>
<tr class="separator:ga6a8a44c0ea555a6243528abc3d31806a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga296b36acac7ad0ff62bfa08d54ce8f96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga296b36acac7ad0ff62bfa08d54ce8f96"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga296b36acac7ad0ff62bfa08d54ce8f96">_command_state</a> { <br />
&#160;&#160;<b>kCommandState_CommandPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_CommandPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhase</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhaseRead</b>, 
<br />
&#160;&#160;<b>kCommandState_DataPhaseWrite</b>
<br />
 }<tr class="memdesc:ga296b36acac7ad0ff62bfa08d54ce8f96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command state machine states. <br /></td></tr>
</td></tr>
<tr class="separator:ga296b36acac7ad0ff62bfa08d54ce8f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga694e5da8d68d25a41a4515917bb54843"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga694e5da8d68d25a41a4515917bb54843"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>buspal_state_t</b> { <br />
&#160;&#160;<b>kBuspal_Idle</b>, 
<br />
&#160;&#160;<b>kBuspal_I2c</b>, 
<br />
&#160;&#160;<b>kBuspal_Spi</b>, 
<br />
&#160;&#160;<b>kBuspal_FlexCAN</b>, 
<br />
&#160;&#160;<b>kBuspal_MsCAN</b>
<br />
 }</td></tr>
<tr class="separator:ga694e5da8d68d25a41a4515917bb54843"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6131ecb945344be95c57622c7fb7f069"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6131ecb945344be95c57622c7fb7f069"></a>
<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga6131ecb945344be95c57622c7fb7f069">bootloader_command_init</a> (void)</td></tr>
<tr class="memdesc:ga6131ecb945344be95c57622c7fb7f069"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the command processor component. <br /></td></tr>
<tr class="separator:ga6131ecb945344be95c57622c7fb7f069"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5c3d096281354d113b3d9b6969a1a5d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga5c3d096281354d113b3d9b6969a1a5d9">bootloader_command_pump</a> (void)</td></tr>
<tr class="memdesc:ga5c3d096281354d113b3d9b6969a1a5d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pump the command state machine.  <a href="#ga5c3d096281354d113b3d9b6969a1a5d9">More...</a><br /></td></tr>
<tr class="separator:ga5c3d096281354d113b3d9b6969a1a5d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d787e73efa1a301b5b19cbf231fb34e"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga7d787e73efa1a301b5b19cbf231fb34e">find_entry</a> (uint8_t tag)</td></tr>
<tr class="memdesc:ga7d787e73efa1a301b5b19cbf231fb34e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find command handler entry.  <a href="#ga7d787e73efa1a301b5b19cbf231fb34e">More...</a><br /></td></tr>
<tr class="separator:ga7d787e73efa1a301b5b19cbf231fb34e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga493d80bfb95bc4eecc6aef3a8711370e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga493d80bfb95bc4eecc6aef3a8711370e"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga493d80bfb95bc4eecc6aef3a8711370e">handle_command_internal</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga493d80bfb95bc4eecc6aef3a8711370e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle a command transaction. <br /></td></tr>
<tr class="separator:ga493d80bfb95bc4eecc6aef3a8711370e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga218748fd1c0987305a058ad4f24bbe95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga218748fd1c0987305a058ad4f24bbe95"></a>
static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga218748fd1c0987305a058ad4f24bbe95">calculate_framing_crc16</a> (<a class="el" href="group__packet.html#structframing__data__packet__t">framing_data_packet_t</a> *packet, const uint8_t *data)</td></tr>
<tr class="memdesc:ga218748fd1c0987305a058ad4f24bbe95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate crc over framing data packet. <br /></td></tr>
<tr class="separator:ga218748fd1c0987305a058ad4f24bbe95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaefd3e7142fee2a26e0c86b23d2e0540a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaefd3e7142fee2a26e0c86b23d2e0540a"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>handle_data_read</b> (bool *hasMoreData)</td></tr>
<tr class="separator:gaefd3e7142fee2a26e0c86b23d2e0540a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab25b902562f6be3e711d26a085578cc1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab25b902562f6be3e711d26a085578cc1"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>handle_read_memory_command</b> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="separator:gab25b902562f6be3e711d26a085578cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9cadcdbb7b20860407e0ba841d814e0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9cadcdbb7b20860407e0ba841d814e0e"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>peripheral_read</b> (uint8_t *dest, uint32_t readLength)</td></tr>
<tr class="separator:ga9cadcdbb7b20860407e0ba841d814e0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga390e2f3ef0226d77b2cd8c30bfc7882f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga390e2f3ef0226d77b2cd8c30bfc7882f"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>peripheral_write</b> (uint8_t *src, uint32_t writeLength)</td></tr>
<tr class="separator:ga390e2f3ef0226d77b2cd8c30bfc7882f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ca8e87cc313caa1ca4197fcff9f5ada"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9ca8e87cc313caa1ca4197fcff9f5ada"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga9ca8e87cc313caa1ca4197fcff9f5ada">handleUsbBusPalCommand</a> ()</td></tr>
<tr class="memdesc:ga9ca8e87cc313caa1ca4197fcff9f5ada"><td class="mdescLeft">&#160;</td><td class="mdescRight">handle USB command <br /></td></tr>
<tr class="separator:ga9ca8e87cc313caa1ca4197fcff9f5ada"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadb50f25587d9ef6645db4eb0c9b27117"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadb50f25587d9ef6645db4eb0c9b27117"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>handle_config_i2c</b> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="separator:gadb50f25587d9ef6645db4eb0c9b27117"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7b972ba9b2d7174c97c798caf85f2925"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7b972ba9b2d7174c97c798caf85f2925"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>handle_config_spi</b> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="separator:ga7b972ba9b2d7174c97c798caf85f2925"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3cc270e9e2e9653c1a32e58cd2bbf5c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3cc270e9e2e9653c1a32e58cd2bbf5c9"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>handle_config_can</b> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="separator:ga3cc270e9e2e9653c1a32e58cd2bbf5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e424858bdc7f7ccb9998a84ea0fe8d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3e424858bdc7f7ccb9998a84ea0fe8d1"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>handle_write_memory_command</b> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="separator:ga3e424858bdc7f7ccb9998a84ea0fe8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5b24d04e2313706dfe012efc14956772"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5b24d04e2313706dfe012efc14956772"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>handle_data_write</b> (bool *hasMoreData)</td></tr>
<tr class="separator:ga5b24d04e2313706dfe012efc14956772"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaef6ced967f75aa2ecbf6fd008286ac1d"></a>
<a class="el" href="group__command.html#structcommand__interface__t">command_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaef6ced967f75aa2ecbf6fd008286ac1d">g_commandInterface</a></td></tr>
<tr class="memdesc:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default command interface. <br /></td></tr>
<tr class="separator:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac2b2545c6124d24cfecb2058d62a71e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac2b2545c6124d24cfecb2058d62a71e6"></a>
const <a class="el" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gac2b2545c6124d24cfecb2058d62a71e6">g_commandHandlerTable</a> []</td></tr>
<tr class="memdesc:gac2b2545c6124d24cfecb2058d62a71e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command handler table. <br /></td></tr>
<tr class="separator:gac2b2545c6124d24cfecb2058d62a71e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga35c859089e834d5a497113411a1415c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga35c859089e834d5a497113411a1415c6"></a>
<a class="el" href="group__command.html#structcommand__processor__data__t">command_processor_data_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga35c859089e834d5a497113411a1415c6">g_commandData</a></td></tr>
<tr class="memdesc:ga35c859089e834d5a497113411a1415c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command processor state data. <br /></td></tr>
<tr class="separator:ga35c859089e834d5a497113411a1415c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__command.html#structcommand__interface__t">command_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaef6ced967f75aa2ecbf6fd008286ac1d">g_commandInterface</a></td></tr>
<tr class="memdesc:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default command interface.  <a href="#gaef6ced967f75aa2ecbf6fd008286ac1d">More...</a><br /></td></tr>
<tr class="separator:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga35c859089e834d5a497113411a1415c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga35c859089e834d5a497113411a1415c6"></a>
<a class="el" href="group__command.html#structcommand__processor__data__t">command_processor_data_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga35c859089e834d5a497113411a1415c6">g_commandData</a></td></tr>
<tr class="memdesc:ga35c859089e834d5a497113411a1415c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command processor state data. <br /></td></tr>
<tr class="separator:ga35c859089e834d5a497113411a1415c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3c06ef0d068d1fba4cb39738208b9b46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3c06ef0d068d1fba4cb39738208b9b46"></a>
buspal_state_t&#160;</td><td class="memItemRight" valign="bottom"><b>g_buspalState</b> = kBuspal_Idle</td></tr>
<tr class="separator:ga3c06ef0d068d1fba4cb39738208b9b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae87533f0a9f2c6f0b10caa07a57e6ca2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae87533f0a9f2c6f0b10caa07a57e6ca2"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>g_targetRxBuffer</b> [64]</td></tr>
<tr class="separator:gae87533f0a9f2c6f0b10caa07a57e6ca2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaef6ced967f75aa2ecbf6fd008286ac1d"></a>
<a class="el" href="group__command.html#structcommand__interface__t">command_interface_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaef6ced967f75aa2ecbf6fd008286ac1d">g_commandInterface</a></td></tr>
<tr class="memdesc:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default command interface. <br /></td></tr>
<tr class="separator:gaef6ced967f75aa2ecbf6fd008286ac1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
State machine</h2></td></tr>
<tr class="memitem:ga04538f731ecbda2e0da74bc60c9298b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga04538f731ecbda2e0da74bc60c9298b9"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga04538f731ecbda2e0da74bc60c9298b9">handle_command</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga04538f731ecbda2e0da74bc60c9298b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle a command transaction. <br /></td></tr>
<tr class="separator:ga04538f731ecbda2e0da74bc60c9298b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1691c6713b4ae242eec4f454e7533588"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1691c6713b4ae242eec4f454e7533588"></a>
static <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga1691c6713b4ae242eec4f454e7533588">handle_data</a> (bool *hasMoreData)</td></tr>
<tr class="memdesc:ga1691c6713b4ae242eec4f454e7533588"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle a data transaction. <br /></td></tr>
<tr class="separator:ga1691c6713b4ae242eec4f454e7533588"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Command handlers</h2></td></tr>
<tr class="memitem:ga374e7e869035a54ec46437c12e53cec0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga374e7e869035a54ec46437c12e53cec0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga374e7e869035a54ec46437c12e53cec0">handle_reset</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga374e7e869035a54ec46437c12e53cec0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset command handler. <br /></td></tr>
<tr class="separator:ga374e7e869035a54ec46437c12e53cec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac390df9b64bdacc8f70ae1ecbc07d65e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac390df9b64bdacc8f70ae1ecbc07d65e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gac390df9b64bdacc8f70ae1ecbc07d65e">handle_flash_erase_all</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gac390df9b64bdacc8f70ae1ecbc07d65e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Erase All command handler. <br /></td></tr>
<tr class="separator:gac390df9b64bdacc8f70ae1ecbc07d65e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac718ef79ce68723ac112c0857739bf7c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac718ef79ce68723ac112c0857739bf7c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gac718ef79ce68723ac112c0857739bf7c">handle_flash_erase_all_unsecure</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gac718ef79ce68723ac112c0857739bf7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Erase All Unsecure command handler. <br /></td></tr>
<tr class="separator:gac718ef79ce68723ac112c0857739bf7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d41b625775ac6072c245c3910e2a254"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7d41b625775ac6072c245c3910e2a254"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga7d41b625775ac6072c245c3910e2a254">handle_flash_erase_region</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga7d41b625775ac6072c245c3910e2a254"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Erase Region command handler. <br /></td></tr>
<tr class="separator:ga7d41b625775ac6072c245c3910e2a254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga08011133ee85471b3553bb582f86f485"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga08011133ee85471b3553bb582f86f485"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga08011133ee85471b3553bb582f86f485">handle_receive_sb_file</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga08011133ee85471b3553bb582f86f485"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive SB File command handler. <br /></td></tr>
<tr class="separator:ga08011133ee85471b3553bb582f86f485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96cbd9b70000336f70f9ec2e1f93ea90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga96cbd9b70000336f70f9ec2e1f93ea90"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga96cbd9b70000336f70f9ec2e1f93ea90">handle_read_memory</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga96cbd9b70000336f70f9ec2e1f93ea90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read Memory command handler. <br /></td></tr>
<tr class="separator:ga96cbd9b70000336f70f9ec2e1f93ea90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4bb4f4fa54851f5a2bd076ab146e232f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4bb4f4fa54851f5a2bd076ab146e232f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga4bb4f4fa54851f5a2bd076ab146e232f">handle_fill_memory</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga4bb4f4fa54851f5a2bd076ab146e232f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill Memory command handler. <br /></td></tr>
<tr class="separator:ga4bb4f4fa54851f5a2bd076ab146e232f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae6ca700ddd4cef686cee06748c77fc2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae6ca700ddd4cef686cee06748c77fc2b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gae6ca700ddd4cef686cee06748c77fc2b">handle_set_property</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gae6ca700ddd4cef686cee06748c77fc2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set Property command handler. <br /></td></tr>
<tr class="separator:gae6ca700ddd4cef686cee06748c77fc2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2efdf09b1bbaab42de9bf6900e2d0f6d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2efdf09b1bbaab42de9bf6900e2d0f6d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga2efdf09b1bbaab42de9bf6900e2d0f6d">handle_get_property</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga2efdf09b1bbaab42de9bf6900e2d0f6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get Property command handler. <br /></td></tr>
<tr class="separator:ga2efdf09b1bbaab42de9bf6900e2d0f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0df5c7d106726137818ecfbc0dc8f5ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0df5c7d106726137818ecfbc0dc8f5ca"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga0df5c7d106726137818ecfbc0dc8f5ca">handle_write_memory</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga0df5c7d106726137818ecfbc0dc8f5ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Memory command handler. <br /></td></tr>
<tr class="separator:ga0df5c7d106726137818ecfbc0dc8f5ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc9d7bd66fd6c948992832cccfab22db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabc9d7bd66fd6c948992832cccfab22db"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gabc9d7bd66fd6c948992832cccfab22db">handle_execute</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gabc9d7bd66fd6c948992832cccfab22db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute command handler. <br /></td></tr>
<tr class="separator:gabc9d7bd66fd6c948992832cccfab22db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa894aa5a375325c28beeefc536840bf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa894aa5a375325c28beeefc536840bf0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaa894aa5a375325c28beeefc536840bf0">handle_call</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gaa894aa5a375325c28beeefc536840bf0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call command handler. <br /></td></tr>
<tr class="separator:gaa894aa5a375325c28beeefc536840bf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga89f8197b43b444436b9ed2fadc1f24bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga89f8197b43b444436b9ed2fadc1f24bd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga89f8197b43b444436b9ed2fadc1f24bd">handle_flash_security_disable</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:ga89f8197b43b444436b9ed2fadc1f24bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Security Disable command handler. <br /></td></tr>
<tr class="separator:ga89f8197b43b444436b9ed2fadc1f24bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29e167911b33ff4bdbf2956ed812db2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga29e167911b33ff4bdbf2956ed812db2a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga29e167911b33ff4bdbf2956ed812db2a">handle_flash_program_once</a> (uint8_t *packet, uint32_t length)</td></tr>
<tr class="memdesc:ga29e167911b33ff4bdbf2956ed812db2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Program Once command handler. <br /></td></tr>
<tr class="separator:ga29e167911b33ff4bdbf2956ed812db2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0738e350c6774bafff7a0f0c61e4c5ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0738e350c6774bafff7a0f0c61e4c5ad"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga0738e350c6774bafff7a0f0c61e4c5ad">handle_flash_read_once</a> (uint8_t *packet, uint32_t length)</td></tr>
<tr class="memdesc:ga0738e350c6774bafff7a0f0c61e4c5ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Read Once command handler. <br /></td></tr>
<tr class="separator:ga0738e350c6774bafff7a0f0c61e4c5ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga293aa3e86913187ce4038a22dca15008"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga293aa3e86913187ce4038a22dca15008"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga293aa3e86913187ce4038a22dca15008">handle_flash_read_resource</a> (uint8_t *packet, uint32_t length)</td></tr>
<tr class="memdesc:ga293aa3e86913187ce4038a22dca15008"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flash Read Resource command handler. <br /></td></tr>
<tr class="separator:ga293aa3e86913187ce4038a22dca15008"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae2a838e214a50d64fdb0583d42eb750"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaae2a838e214a50d64fdb0583d42eb750"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaae2a838e214a50d64fdb0583d42eb750">handle_configure_quadspi</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gaae2a838e214a50d64fdb0583d42eb750"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure QuadSpi command handler. <br /></td></tr>
<tr class="separator:gaae2a838e214a50d64fdb0583d42eb750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0ece65c32cba016d039bdafa2c67703"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa0ece65c32cba016d039bdafa2c67703"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaa0ece65c32cba016d039bdafa2c67703">handle_reliable_update</a> (uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="memdesc:gaa0ece65c32cba016d039bdafa2c67703"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reliable Update command handler. <br /></td></tr>
<tr class="separator:gaa0ece65c32cba016d039bdafa2c67703"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Command responses</h2></td></tr>
<tr class="memitem:gaa52fe399ffb7d65073d481e7d37f7010"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa52fe399ffb7d65073d481e7d37f7010"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gaa52fe399ffb7d65073d481e7d37f7010">send_read_memory_response</a> (uint32_t commandStatus, uint32_t length)</td></tr>
<tr class="memdesc:gaa52fe399ffb7d65073d481e7d37f7010"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a read memory response packet. <br /></td></tr>
<tr class="separator:gaa52fe399ffb7d65073d481e7d37f7010"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga24c60a1c5a82b33826fec85e216c8781"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga24c60a1c5a82b33826fec85e216c8781"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga24c60a1c5a82b33826fec85e216c8781">send_generic_response</a> (uint32_t commandStatus, uint32_t commandTag)</td></tr>
<tr class="memdesc:ga24c60a1c5a82b33826fec85e216c8781"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a generic response packet. <br /></td></tr>
<tr class="separator:ga24c60a1c5a82b33826fec85e216c8781"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab7ac151ad4a99ebc7a778a1528c9ff10"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab7ac151ad4a99ebc7a778a1528c9ff10"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#gab7ac151ad4a99ebc7a778a1528c9ff10">send_get_property_response</a> (uint32_t commandStatus, uint32_t *value, uint32_t numValues)</td></tr>
<tr class="memdesc:gab7ac151ad4a99ebc7a778a1528c9ff10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a get property response packet. <br /></td></tr>
<tr class="separator:gab7ac151ad4a99ebc7a778a1528c9ff10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38710108a3f7b3ade5f6262679dff4c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga38710108a3f7b3ade5f6262679dff4c9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga38710108a3f7b3ade5f6262679dff4c9">send_flash_read_once_response</a> (uint32_t commandStatus, uint32_t *value, uint32_t byteCount)</td></tr>
<tr class="memdesc:ga38710108a3f7b3ade5f6262679dff4c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a flash read once resposne packet. <br /></td></tr>
<tr class="separator:ga38710108a3f7b3ade5f6262679dff4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga970f3bd207a187c2a36ddb5878a9d97c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga970f3bd207a187c2a36ddb5878a9d97c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga970f3bd207a187c2a36ddb5878a9d97c">send_flash_read_resource_response</a> (uint32_t commandStatus, uint32_t length)</td></tr>
<tr class="memdesc:ga970f3bd207a187c2a36ddb5878a9d97c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a flash read resource memory response packet. <br /></td></tr>
<tr class="separator:ga970f3bd207a187c2a36ddb5878a9d97c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Data phase</h2></td></tr>
<tr class="memitem:ga3e173f4f6b10bb8ccd3c9709e19ddb3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3e173f4f6b10bb8ccd3c9709e19ddb3c"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga3e173f4f6b10bb8ccd3c9709e19ddb3c">reset_data_phase</a> ()</td></tr>
<tr class="memdesc:ga3e173f4f6b10bb8ccd3c9709e19ddb3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset data phase variables. <br /></td></tr>
<tr class="separator:ga3e173f4f6b10bb8ccd3c9709e19ddb3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6efe98e5439d0e9d4a5a9e7248487ad4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6efe98e5439d0e9d4a5a9e7248487ad4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga6efe98e5439d0e9d4a5a9e7248487ad4">finalize_data_phase</a> (<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status)</td></tr>
<tr class="memdesc:ga6efe98e5439d0e9d4a5a9e7248487ad4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Complete the data phase, optionally send a response. <br /></td></tr>
<tr class="separator:ga6efe98e5439d0e9d4a5a9e7248487ad4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4608205050e1da9814b854b36d7108a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4608205050e1da9814b854b36d7108a2"></a>
<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga4608205050e1da9814b854b36d7108a2">handle_data_producer</a> (bool *hasMoreData)</td></tr>
<tr class="memdesc:ga4608205050e1da9814b854b36d7108a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle data phase with data producer (send to host). <br /></td></tr>
<tr class="separator:ga4608205050e1da9814b854b36d7108a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga85afa44b89c400020c3f53d68bfa46e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga85afa44b89c400020c3f53d68bfa46e2"></a>
<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#ga85afa44b89c400020c3f53d68bfa46e2">handle_data_consumer</a> (bool *hasMoreData)</td></tr>
<tr class="memdesc:ga85afa44b89c400020c3f53d68bfa46e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handle data phase with data consumer (read from host). <br /></td></tr>
<tr class="separator:ga85afa44b89c400020c3f53d68bfa46e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Usage Information</h2>
<p>API for the command handler. </p>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structcommand__handler__entry__t" id="structcommand__handler__entry__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct command_handler_entry_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Format of command handler entry. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a9007ad6e09c4b4fcfe7fbcc34f8fb6a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9007ad6e09c4b4fcfe7fbcc34f8fb6a5"></a>
void(*&#160;</td><td class="memItemRight" valign="bottom"><b>handleCommand</b> )(uint8_t *packet, uint32_t packetLength)</td></tr>
<tr class="separator:a9007ad6e09c4b4fcfe7fbcc34f8fb6a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b0d8e176f0c2227ea87c5999c860f99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b0d8e176f0c2227ea87c5999c860f99"></a>
<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><b>handleData</b> )(bool *hasMoreData)</td></tr>
<tr class="separator:a7b0d8e176f0c2227ea87c5999c860f99"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>

</div>
</div>
<a name="structcommand__processor__data__t" id="structcommand__processor__data__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct command_processor_data_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Command processor data format. </p>
</div><div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for command_processor_data_t:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structcommand__processor__data__t__coll__graph.svg" width="300" height="127"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr><td colspan="2"><h3>Public Member Functions</h3></td></tr>
<tr class="memitem:a2bd5247c34e5cab326409ca552240e01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bd5247c34e5cab326409ca552240e01"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#a2bd5247c34e5cab326409ca552240e01">CommandProcessorData</a> ()</td></tr>
<tr class="memdesc:a2bd5247c34e5cab326409ca552240e01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to handler table entry for packet in process. <br /></td></tr>
<tr class="separator:a2bd5247c34e5cab326409ca552240e01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:af8ec6e123570f44094bcf2cb02b478f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ec6e123570f44094bcf2cb02b478f4"></a>
int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#af8ec6e123570f44094bcf2cb02b478f4">state</a></td></tr>
<tr class="memdesc:af8ec6e123570f44094bcf2cb02b478f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current state machine state. <br /></td></tr>
<tr class="separator:af8ec6e123570f44094bcf2cb02b478f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af77c2f11739dc8fca077753cc3a6e5fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af77c2f11739dc8fca077753cc3a6e5fb"></a>
uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#af77c2f11739dc8fca077753cc3a6e5fb">packet</a></td></tr>
<tr class="memdesc:af77c2f11739dc8fca077753cc3a6e5fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to packet in process. <br /></td></tr>
<tr class="separator:af77c2f11739dc8fca077753cc3a6e5fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f48f6f8fd3b9bef199a0188f97692b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f48f6f8fd3b9bef199a0188f97692b0"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__command.html#a4f48f6f8fd3b9bef199a0188f97692b0">packetLength</a></td></tr>
<tr class="memdesc:a4f48f6f8fd3b9bef199a0188f97692b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Length of packet in process. <br /></td></tr>
<tr class="separator:a4f48f6f8fd3b9bef199a0188f97692b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab408610a14c7cc0ca4a99046601ffffe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab408610a14c7cc0ca4a99046601ffffe"></a>
struct <a class="el" href="structcommand__processor__data__t_1_1_data_phase.html">command_processor_data_t::DataPhase</a>&#160;</td><td class="memItemRight" valign="bottom"><b>dataPhase</b></td></tr>
<tr class="separator:ab408610a14c7cc0ca4a99046601ffffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcb90a973ff84c0b33df57b6f6cf68c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcb90a973ff84c0b33df57b6f6cf68c7"></a>
const <a class="el" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>handlerEntry</b></td></tr>
<tr class="separator:abcb90a973ff84c0b33df57b6f6cf68c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>

</div>
</div>
<a name="structcommand__interface__t" id="structcommand__interface__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct command_interface_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>Interface to command processor operations. </p>
</div><div id="dynsection-2" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-2-trigger" src="closed.png" alt="+"/> Collaboration diagram for command_interface_t:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structcommand__interface__t__coll__graph.svg" width="367" height="216"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a54731f0b99cac39058eeeb142898f68a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54731f0b99cac39058eeeb142898f68a"></a>
<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><b>init</b> )(void)</td></tr>
<tr class="separator:a54731f0b99cac39058eeeb142898f68a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643316eeb75c93dedea879147782789f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a643316eeb75c93dedea879147782789f"></a>
<a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><b>pump</b> )(void)</td></tr>
<tr class="separator:a643316eeb75c93dedea879147782789f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab06a53603b16f57c53f4ee5a2ef22099"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab06a53603b16f57c53f4ee5a2ef22099"></a>
const <a class="el" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>handlerTable</b></td></tr>
<tr class="separator:ab06a53603b16f57c53f4ee5a2ef22099"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27cf1611c6b1d08a26c160148ee7c319"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27cf1611c6b1d08a26c160148ee7c319"></a>
<a class="el" href="group__command.html#structcommand__processor__data__t">command_processor_data_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>stateData</b></td></tr>
<tr class="separator:a27cf1611c6b1d08a26c160148ee7c319"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>

</div>
</div>
<a name="structconfig__i2c__cmd__packet__t" id="structconfig__i2c__cmd__packet__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct config_i2c_cmd_packet_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"></div><div id="dynsection-3" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-3-trigger" src="closed.png" alt="+"/> Collaboration diagram for config_i2c_cmd_packet_t:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="structconfig__i2c__cmd__packet__t__coll__graph.svg" width="199" height="127"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ac0d31ca829f934cccd89f8054e02773e"></a>uint32_t</td>
<td class="fieldname">
address</td>
<td class="fielddoc">
Parameter 0: i2c slave address. </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a97a645f59cb39cc8bd9f9a331a8a5e1c"></a><a class="el" href="group__packet.html#structcommand__packet__t">command_packet_t</a></td>
<td class="fieldname">
commandPacket</td>
<td class="fielddoc">
header </td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a220859a8b5da0232739a11cbe7f79fc5"></a>uint32_t</td>
<td class="fieldname">
speed</td>
<td class="fielddoc">
Parameter 1: i2c speed in kHz. </td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga6a8a44c0ea555a6243528abc3d31806a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__command.html#ga6a8a44c0ea555a6243528abc3d31806a">_secure_commands</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="gga6a8a44c0ea555a6243528abc3d31806aabf915d8b3f364392628700d2cd25d043"></a>kCommandsAllowedWhenSecure&#160;</td><td class="fielddoc">
<p>Bitmask of commands allowed when flash security is enabled. </p>
<p>This bitmask uses the same format as the AvailableCommands property. This is, the bit number for a given command is the command's tag value minus one. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga5c3d096281354d113b3d9b6969a1a5d9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> bootloader_command_pump </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Pump the command state machine. </p>
<p>Executes one command or data phase transaction. </p>

</div>
</div>
<a class="anchor" id="ga7d787e73efa1a301b5b19cbf231fb34e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static const <a class="el" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a>* find_entry </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>tag</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Find command handler entry. </p>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">NULL</td><td>if no entry found. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="gaef6ced967f75aa2ecbf6fd008286ac1d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__command.html#structcommand__interface__t">command_interface_t</a> g_commandInterface</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= { <a class="code" href="group__command.html#ga6131ecb945344be95c57622c7fb7f069">bootloader_command_init</a>, <a class="code" href="group__command.html#ga5c3d096281354d113b3d9b6969a1a5d9">bootloader_command_pump</a>,</div><div class="line">                                           (<a class="code" href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a> *)&amp;<a class="code" href="group__command.html#gac2b2545c6124d24cfecb2058d62a71e6">g_commandHandlerTable</a>, &amp;<a class="code" href="group__command.html#ga35c859089e834d5a497113411a1415c6">g_commandData</a> }</div><div class="ttc" id="group__command_html_gac2b2545c6124d24cfecb2058d62a71e6"><div class="ttname"><a href="group__command.html#gac2b2545c6124d24cfecb2058d62a71e6">g_commandHandlerTable</a></div><div class="ttdeci">const command_handler_entry_t g_commandHandlerTable[]</div><div class="ttdoc">Command handler table. </div><div class="ttdef"><b>Definition:</b> bl_command.c:127</div></div>
<div class="ttc" id="group__command_html_structcommand__handler__entry__t"><div class="ttname"><a href="group__command.html#structcommand__handler__entry__t">command_handler_entry_t</a></div><div class="ttdoc">Format of command handler entry. </div><div class="ttdef"><b>Definition:</b> bl_command.h:49</div></div>
<div class="ttc" id="group__command_html_ga35c859089e834d5a497113411a1415c6"><div class="ttname"><a href="group__command.html#ga35c859089e834d5a497113411a1415c6">g_commandData</a></div><div class="ttdeci">command_processor_data_t g_commandData</div><div class="ttdoc">Command processor state data. </div><div class="ttdef"><b>Definition:</b> bl_command.c:204</div></div>
<div class="ttc" id="group__command_html_ga5c3d096281354d113b3d9b6969a1a5d9"><div class="ttname"><a href="group__command.html#ga5c3d096281354d113b3d9b6969a1a5d9">bootloader_command_pump</a></div><div class="ttdeci">status_t bootloader_command_pump(void)</div><div class="ttdoc">Pump the command state machine. </div><div class="ttdef"><b>Definition:</b> bl_command.c:224</div></div>
<div class="ttc" id="group__command_html_ga6131ecb945344be95c57622c7fb7f069"><div class="ttname"><a href="group__command.html#ga6131ecb945344be95c57622c7fb7f069">bootloader_command_init</a></div><div class="ttdeci">status_t bootloader_command_init(void)</div><div class="ttdoc">Initialize the command processor component. </div><div class="ttdef"><b>Definition:</b> bl_command.c:215</div></div>
</div><!-- fragment -->
<p>Default command interface. </p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Mon Mar 7 2016 16:48:23 for Kinetis Bootloader by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
